package cn.dduan.fool.serializable;

import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * Jackson
 * <p>
 * 总结
 * 1. 序列化：使用 ObjectMapper 的 writeValueAsString 方法将 Java 对象转换为 JSON 字符串。
 * 2. 反序列化：使用 ObjectMapper 的 readValue 方法将 JSON 字符串转换为 Java 对象。对于集合类型的反序列化，需要使用 TypeReference 来指定泛型类型。
 * 3. 自定义配置：可以通过 ObjectMapper 的相关方法对序列化和反序列化过程进行自定义配置，如格式化输出、日期格式设置等。
 *
 * @author dduan
 * @version 1.0
 * @date 2025/3/1
 */
public class MyJacksonSerialization {
    public static void main(String[] args) {
        PersonB person = new PersonB("Bob", 30);

        ObjectMapper objectMapper = new ObjectMapper();

        try {
            // 序列化
            String json = objectMapper.writeValueAsString(person);
            System.out.println("JSON: " + json);

            // 反序列化
            PersonB personB = objectMapper.readValue(json, PersonB.class);
            System.out.println("Name: " + personB.getName() + ", Age: " + personB.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class PersonC {
    private String name;
    private int age;

    public PersonC(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}
